{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "83737bf2",
   "metadata": {},
   "source": [
    "# Explaining a model that uses standardized features\n",
    "\n",
    "Standardizing features is a common preprocessing step for many ML pipelines. When explaining a model that uses standardized features it is often desirable to get explanations using the original input features (not their standardized versions). This notebook shows how to do that using the property that any univariate transformation applied to a model's inputs does not effect the Shapley values for the model (note that multi-variate transformations like PCA decompositions do change the Shapley values so this trick does not apply there)."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8aa3f573",
   "metadata": {},
   "source": [
    "## Build a linear model that uses standardized features"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "30a9847c",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-07-21T12:09:04.351693171Z",
     "start_time": "2023-07-21T12:09:02.974889637Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Using `tqdm.autonotebook.tqdm` in notebook mode. Use `tqdm.tqdm` instead to force console mode (e.g. in jupyter console)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": "<Figure size 600x500 with 2 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import sklearn\n",
    "\n",
    "import shap\n",
    "\n",
    "# get standardized data\n",
    "X, y = shap.datasets.california()\n",
    "scaler = sklearn.preprocessing.StandardScaler()\n",
    "scaler.fit(X)\n",
    "X_std = scaler.transform(X)\n",
    "\n",
    "# train the linear model\n",
    "model = sklearn.linear_model.LinearRegression().fit(X_std, y)\n",
    "\n",
    "# explain the model's predictions using SHAP\n",
    "explainer = shap.explainers.Linear(model, X_std)\n",
    "shap_values = explainer(X_std)\n",
    "\n",
    "# visualize the model's dependence on the first feature\n",
    "shap.plots.scatter(shap_values[:, 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5bf0c27c",
   "metadata": {},
   "source": [
    "## Convert the explanation to the original feature space"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "4be65152",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-07-21T12:09:04.601225072Z",
     "start_time": "2023-07-21T12:09:04.488322017Z"
    }
   },
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": "<Figure size 600x500 with 2 Axes>"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# we add back the feature names stripped by the StandardScaler\n",
    "for i, c in enumerate(X.columns):\n",
    "    shap_values.feature_names[i] = c\n",
    "\n",
    "# we convert back to the original data\n",
    "# (note we can do this because X_std is a set of univariate transformations of X)\n",
    "shap_values.data = X.values\n",
    "\n",
    "# visualize the model's dependence on the first feature again, now in the new original feature space\n",
    "shap.plots.scatter(shap_values[:, 0])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "017131fd",
   "metadata": {},
   "source": [
    "<hr>\n",
    "Have an idea for more helpful examples? Pull requests that add to this documentation notebook are encouraged!"
   ]
  }
 ],
 "metadata": {
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
